# @Time    :2025/3/21 19:32
num1 = 10
num2 = True
print(id(num1))  # 获取对象的内存地址

print("num1的类型:", type(num1))
print("num2的类型:", type(num2))
print(isinstance(num1, int))
print(type(num2))
print(isinstance(num2, bool))
print(type(num1) == type(num2))

# ---------------浮点数---会造成精度丢失问题--------------
num1 = 0.1
num2 = 0.2
num3 = num1 + num2
print(num3)  # 精度丢失
print(type(num3))
print(isinstance(num3, float))
# ---------------Decimal---解决精度丢失问题--------------
from decimal import Decimal

num1 = Decimal("0.1")
num2 = Decimal("0.2")
num3 = num1 + num2
print(num3)

num1 = True
num2 = False
print(num1, num2)
print("num2的类型是", type(num2), " num1的类型是", type(num1))

# bool是int类型 可以和整数进行运算
print(num1 + 10)
print(num2 + 10)

# ---------------比较运算符--==判断的 是等号左右两边的值是否相等-----
num1 = 0.1
num2 = 0.2
print(num1 == num2)
print("num1是否等于0.1", num1 == 0.1)
print("num2是否等于0.2", num2 == 0.2)

# ---------------比较运算符--is判断的 是等号左右是否指向同一个地址-----
# print(num1 is 0.1)
# print(num2 is 0)

print("hello\\ world")  # hello\ world
print("hello\' world")  # hello' world
print("hello\'' world")  # hello'' world
print("hello\t world")  # 制表位  hello	 world
print("hello\b world")  # 退格 hell world
print("hello\n world")  # 换行

# ---------------------自动类型转换------------------
num1 = 0.2
num2 = 0.1
num3 = num1 + num2

num4 = num1 / num2
print("num3的值是： ", num3)
print(num4, type(num4))

from decimal import Decimal

num1 = Decimal("0.1")
num2 = Decimal("0.2")
num5 = num1 + num2
print(num5)

# ---------------------不同的类型转换------------------
num1 = int("12", 16)  # "" 内得是整数
print(num1)

num2 = float(12)
print(num2, type(num2))

str1 = "hello world"
print(str1)  # 转换成字符串hello world
print(str(str1))

print(repr(str1))  # 转换成字符串'hello world'显示的表述

print(eval("2+3"))  # 执行x字符串表达形式，并返回表达式的值

# ord(x) 将一个字母转换成ASCII整数值
print(ord("b"))

print(chr(98))  # 将一个整数转换为一个Unicode字符
# --------------------------输入---------------------------------------------
# name = input("请输入你的名字：")
# print(name)
# #-----------------------输出-普通输出--------------------------------------------
print("hello world")
print("hello world", end="\n")
print("abc")
# -----------------------输出-格式化输出--------------------------------------------
# -----------------------（1）字符串中使用 % 占位---------------------------------------------
# -----------------------（2.1）字符串.format()----不设置指定位置，按默认顺序--------------------------------------------
# ---------------------- （2.2）字符串.format()----设置指定位置，不能和方式1混合使用--------------------------------------------
# ---------------------- （2.3）字符串.format()----设置参数--------------------------------------------
# ---------------------- （3）数字格式化：--------------------------------------------
# ---------------------- （4）使用大括号 {} 来转义大括号--------------------------------------------
# ---------------------- （5）f-字符串-------------------------------------------

# -------------------------

# -----------------------（1）字符串中使用 % 占位---------------------------------------------
num1 = 10
num2 = 3.14159
num3 = False
str1 = "num1=%d,num2=%.2f,num3=%s" % (num1, num2,num3)
print("----------=========",str1)

# -----------------------（2.1）字符串.format()----不设置指定位置，按默认顺序--------------------------------------------
str2 = "num1={},num2={},num3={}".format(num1, num2, num3)
print(str2)

# ---------------------- （2.2）字符串.format()----设置指定位置，不能和方式1混合使用--------------------------------------------
str3 = "num1={0},num2={1},num3={2}".format(num1, num2, num3)
print(str3)

# ---------------------- （2.3）字符串.format()----设置参数--------------------------------------------
str4 = "num1={n1},num2={n2},num3={n3}".format(n1=num1, n2=num2, n3=num3)
print(str4)

# ---------------------- （3）数字格式化：--------------------------------------------
float1 = 3.1413456
print("{:*^20,.2f}".format(float1))  # 居中
print("{:*>20,.2f}".format(float1))  # 右对齐
print("{:*<20,.2f}".format(float1))

# ---------------------- （4）使用大括号 {} 来转义大括号--------------------------------------------
print("{0}的对应位置 是{0}".format("qqq"))
print("{}的对应位置是{{1}}".format("hh"))
# ---------------------- （5）f-字符串-------------------------------------------
num1 = 10
num2 = 2.12
str1 = "num1={},num2={}".format(num1, num2)
str2 = f"num1={num1},num2={num2}"
print(str1, str2)

# 要求：指定的名字必须得相同
str3 = f"{num1=},{num2=}"
print(str3)
